package top.MiraiJavaEasy.Event;

import net.mamoe.mirai.event.ConcurrencyKind;
import net.mamoe.mirai.event.Event;
import net.mamoe.mirai.event.EventPriority;

/**
 * 该抽象类是对MiraiJavaEasyEvent接口的简单封装
 * 目的时为了让开发者可以更加简单的实现事件效果
 * <p>
 * 该类对Finally函数进行了空实现；
 * 对Catch函数实现了简单的把错误打印到控制台，并没有输出到日志文件；
 * 对getConcurrencyKind和getEventPriority函数实现了一个默认的类型；
 * <p>
 * 开发者在继承了该类后，只需要实现getEventClass和Start函数即可
 */
public abstract class MiraiJavaEasyEventSimple<T extends Event> implements MiraiJavaEasyEvent<T> {

    @Override
    public void Catch(T MiraiEvent, Exception e) {
        e.printStackTrace();
    }

    @Override
    public void Finally(T MiraiEvent) {
    }

    @Override
    public ConcurrencyKind getConcurrencyKind() {
        return ConcurrencyKind.CONCURRENT;
    }

    @Override
    public EventPriority getEventPriority() {
        return EventPriority.NORMAL;
    }
}
